 /* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

京东云jcq接口
jcq相关接口

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#import <Foundation/Foundation.h>
#import <JDCloudOCSDKJcq/JcqExecutor.h>

@implementation JcqClient

@synthesize userAgent = _userAgent;
@synthesize serviceName = _serviceName;
@synthesize version = _version;

-(void) addCustomerHeaderWithKey:(NSString*) key
                           value:(NSString*) value{
    if(![self customHeader])
    {
        self.customHeader = [[NSMutableDictionary alloc] init];
    }
    if(key && value)
    {
        [[self customHeader] setValue:value forKey:key];
    }
   
}

-(id)initWithGlobalConfig{
    if(![GlobalConfig credential])
    {
        NSException *e = [SDKArgumentNullException exceptionWithName:@"ArgumentNullException" reason:@"GlobalConfig credential not config" userInfo:nil];
        @throw e;
    }
    self.credential = [GlobalConfig credential];
    if(![GlobalConfig sdkEnvironment])
    {
        self.sdkEnvironment = [[SDKEnvironment alloc] initWithEndPoint:@"jcq.jdcloud-api.com"];
    }else
    {
        self.sdkEnvironment = [GlobalConfig sdkEnvironment];
    }
    self.httpRequestProtocol = @"https";
    _userAgent = @"JdCloudOCSdk 0.0.1 jcq  v1";
    _serviceName = @"jcq";
    _version = @"v1";
    self.contentType = @"application/json";
    return self;
}

-(id)initWithCredential:(Credential*)credential
         sdkEnvironment:(SDKEnvironment*)sdkEnvironment
{
    if(!credential)
    {
        NSException *e = [SDKArgumentNullException exceptionWithName:@"ArgumentNullException" reason:@" credential can not null" userInfo:nil];
        @throw e;
    }else{
        self.credential = credential;
    }
    
    if(!sdkEnvironment)
    {
        NSException *e = [SDKArgumentNullException exceptionWithName:@"ArgumentNullException" reason:@" sdkEnvironment can not null" userInfo:nil];
        @throw e;
    }else{
        self.sdkEnvironment = sdkEnvironment;
    }
    self.httpRequestProtocol = @"https";
    _userAgent = @"JdCloudOCSdk 0.0.1 jcq  v1";
    _serviceName = @"jcq";
    _version = @"v1";
    self.contentType = @"application/json";
    return self;
}

-(id)initWithCredential:(Credential*)credential
{
    if(!credential)
    {
        NSException *e = [SDKArgumentNullException exceptionWithName:@"ArgumentNullException" reason:@" credential can not null" userInfo:nil];
        @throw e;
    }else{
        self.credential = credential;
    }
    if(![GlobalConfig sdkEnvironment])
    {
        self.sdkEnvironment = [[SDKEnvironment alloc] initWithEndPoint:@"jcq.jdcloud-api.com"];
    }else
    {
        self.sdkEnvironment = [GlobalConfig sdkEnvironment];
    }
    self.httpRequestProtocol = @"https";
    _userAgent = @"JdCloudOCSdk 0.0.1 jcq  v1";
    _serviceName = @"jcq";
    _version = @"v1";
    self.contentType = @"application/json";
    return self;
}

-(id)init{
    self.httpRequestProtocol = @"https";
    _userAgent = @"JdCloudOCSdk 0.0.1 jcq  v1";
    _serviceName = @"jcq";
    _version = @"v1";
    self.contentType = @"application/json";
    return self;
}


/**
listDeadLetters sync request
@param listDeadLettersRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `listDeadLettersResponse` the request response data model
*/
-(NSDictionary*) listDeadLettersSyncWithRequest:(JcqListDeadLettersRequest*) listDeadLettersRequest
{
JcqListDeadLettersExecutor* excutor = [[JcqListDeadLettersExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:listDeadLettersRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqListDeadLettersResponse* response = [[JcqListDeadLettersResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"listDeadLettersResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)listDeadLettersAsyncWithRequest:(JcqListDeadLettersRequest*) listDeadLettersRequest
                       completionHandler:(void(^)(int statusCode,JcqListDeadLettersResponse* _Nullable listDeadLettersResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqListDeadLettersExecutor* excutor = [[JcqListDeadLettersExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:listDeadLettersRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqListDeadLettersResponse* response = [[JcqListDeadLettersResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeDeadLetterNumbers sync request
@param describeDeadLetterNumbersRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeDeadLetterNumbersResponse` the request response data model
*/
-(NSDictionary*) describeDeadLetterNumbersSyncWithRequest:(JcqDescribeDeadLetterNumbersRequest*) describeDeadLetterNumbersRequest
{
JcqDescribeDeadLetterNumbersExecutor* excutor = [[JcqDescribeDeadLetterNumbersExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeDeadLetterNumbersRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeDeadLetterNumbersResponse* response = [[JcqDescribeDeadLetterNumbersResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeDeadLetterNumbersResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeDeadLetterNumbersAsyncWithRequest:(JcqDescribeDeadLetterNumbersRequest*) describeDeadLetterNumbersRequest
                       completionHandler:(void(^)(int statusCode,JcqDescribeDeadLetterNumbersResponse* _Nullable describeDeadLetterNumbersResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqDescribeDeadLetterNumbersExecutor* excutor = [[JcqDescribeDeadLetterNumbersExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeDeadLetterNumbersRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeDeadLetterNumbersResponse* response = [[JcqDescribeDeadLetterNumbersResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
cleanMessages sync request
@param cleanMessagesRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `cleanMessagesResponse` the request response data model
*/
-(NSDictionary*) cleanMessagesSyncWithRequest:(JcqCleanMessagesRequest*) cleanMessagesRequest
{
JcqCleanMessagesExecutor* excutor = [[JcqCleanMessagesExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:cleanMessagesRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqCleanMessagesResponse* response = [[JcqCleanMessagesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"cleanMessagesResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)cleanMessagesAsyncWithRequest:(JcqCleanMessagesRequest*) cleanMessagesRequest
                       completionHandler:(void(^)(int statusCode,JcqCleanMessagesResponse* _Nullable cleanMessagesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqCleanMessagesExecutor* excutor = [[JcqCleanMessagesExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:cleanMessagesRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqCleanMessagesResponse* response = [[JcqCleanMessagesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
deleteTopic sync request
@param deleteTopicRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteTopicResponse` the request response data model
*/
-(NSDictionary*) deleteTopicSyncWithRequest:(JcqDeleteTopicRequest*) deleteTopicRequest
{
JcqDeleteTopicExecutor* excutor = [[JcqDeleteTopicExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:deleteTopicRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDeleteTopicResponse* response = [[JcqDeleteTopicResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"deleteTopicResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)deleteTopicAsyncWithRequest:(JcqDeleteTopicRequest*) deleteTopicRequest
                       completionHandler:(void(^)(int statusCode,JcqDeleteTopicResponse* _Nullable deleteTopicResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqDeleteTopicExecutor* excutor = [[JcqDeleteTopicExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:deleteTopicRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDeleteTopicResponse* response = [[JcqDeleteTopicResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
resendDeadLetters sync request
@param resendDeadLettersRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `resendDeadLettersResponse` the request response data model
*/
-(NSDictionary*) resendDeadLettersSyncWithRequest:(JcqResendDeadLettersRequest*) resendDeadLettersRequest
{
JcqResendDeadLettersExecutor* excutor = [[JcqResendDeadLettersExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:resendDeadLettersRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqResendDeadLettersResponse* response = [[JcqResendDeadLettersResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"resendDeadLettersResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)resendDeadLettersAsyncWithRequest:(JcqResendDeadLettersRequest*) resendDeadLettersRequest
                       completionHandler:(void(^)(int statusCode,JcqResendDeadLettersResponse* _Nullable resendDeadLettersResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqResendDeadLettersExecutor* excutor = [[JcqResendDeadLettersExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:resendDeadLettersRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqResendDeadLettersResponse* response = [[JcqResendDeadLettersResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeAccessPoint sync request
@param describeAccessPointRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeAccessPointResponse` the request response data model
*/
-(NSDictionary*) describeAccessPointSyncWithRequest:(JcqDescribeAccessPointRequest*) describeAccessPointRequest
{
JcqDescribeAccessPointExecutor* excutor = [[JcqDescribeAccessPointExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeAccessPointRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeAccessPointResponse* response = [[JcqDescribeAccessPointResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeAccessPointResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeAccessPointAsyncWithRequest:(JcqDescribeAccessPointRequest*) describeAccessPointRequest
                       completionHandler:(void(^)(int statusCode,JcqDescribeAccessPointResponse* _Nullable describeAccessPointResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqDescribeAccessPointExecutor* excutor = [[JcqDescribeAccessPointExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeAccessPointRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeAccessPointResponse* response = [[JcqDescribeAccessPointResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeTopics sync request
@param describeTopicsRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeTopicsResponse` the request response data model
*/
-(NSDictionary*) describeTopicsSyncWithRequest:(JcqDescribeTopicsRequest*) describeTopicsRequest
{
JcqDescribeTopicsExecutor* excutor = [[JcqDescribeTopicsExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeTopicsRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeTopicsResponse* response = [[JcqDescribeTopicsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeTopicsResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeTopicsAsyncWithRequest:(JcqDescribeTopicsRequest*) describeTopicsRequest
                       completionHandler:(void(^)(int statusCode,JcqDescribeTopicsResponse* _Nullable describeTopicsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqDescribeTopicsExecutor* excutor = [[JcqDescribeTopicsExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeTopicsRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeTopicsResponse* response = [[JcqDescribeTopicsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
removePermission sync request
@param removePermissionRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `removePermissionResponse` the request response data model
*/
-(NSDictionary*) removePermissionSyncWithRequest:(JcqRemovePermissionRequest*) removePermissionRequest
{
JcqRemovePermissionExecutor* excutor = [[JcqRemovePermissionExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:removePermissionRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqRemovePermissionResponse* response = [[JcqRemovePermissionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"removePermissionResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)removePermissionAsyncWithRequest:(JcqRemovePermissionRequest*) removePermissionRequest
                       completionHandler:(void(^)(int statusCode,JcqRemovePermissionResponse* _Nullable removePermissionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqRemovePermissionExecutor* excutor = [[JcqRemovePermissionExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:removePermissionRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqRemovePermissionResponse* response = [[JcqRemovePermissionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
resetConsumeOffset sync request
@param resetConsumeOffsetRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `resetConsumeOffsetResponse` the request response data model
*/
-(NSDictionary*) resetConsumeOffsetSyncWithRequest:(JcqResetConsumeOffsetRequest*) resetConsumeOffsetRequest
{
JcqResetConsumeOffsetExecutor* excutor = [[JcqResetConsumeOffsetExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:resetConsumeOffsetRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqResetConsumeOffsetResponse* response = [[JcqResetConsumeOffsetResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"resetConsumeOffsetResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)resetConsumeOffsetAsyncWithRequest:(JcqResetConsumeOffsetRequest*) resetConsumeOffsetRequest
                       completionHandler:(void(^)(int statusCode,JcqResetConsumeOffsetResponse* _Nullable resetConsumeOffsetResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqResetConsumeOffsetExecutor* excutor = [[JcqResetConsumeOffsetExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:resetConsumeOffsetRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqResetConsumeOffsetResponse* response = [[JcqResetConsumeOffsetResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
deleteDeadLetters sync request
@param deleteDeadLettersRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteDeadLettersResponse` the request response data model
*/
-(NSDictionary*) deleteDeadLettersSyncWithRequest:(JcqDeleteDeadLettersRequest*) deleteDeadLettersRequest
{
JcqDeleteDeadLettersExecutor* excutor = [[JcqDeleteDeadLettersExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:deleteDeadLettersRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDeleteDeadLettersResponse* response = [[JcqDeleteDeadLettersResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"deleteDeadLettersResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)deleteDeadLettersAsyncWithRequest:(JcqDeleteDeadLettersRequest*) deleteDeadLettersRequest
                       completionHandler:(void(^)(int statusCode,JcqDeleteDeadLettersResponse* _Nullable deleteDeadLettersResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqDeleteDeadLettersExecutor* excutor = [[JcqDeleteDeadLettersExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:deleteDeadLettersRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDeleteDeadLettersResponse* response = [[JcqDeleteDeadLettersResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
createTopic sync request
@param createTopicRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createTopicResponse` the request response data model
*/
-(NSDictionary*) createTopicSyncWithRequest:(JcqCreateTopicRequest*) createTopicRequest
{
JcqCreateTopicExecutor* excutor = [[JcqCreateTopicExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:createTopicRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqCreateTopicResponse* response = [[JcqCreateTopicResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"createTopicResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)createTopicAsyncWithRequest:(JcqCreateTopicRequest*) createTopicRequest
                       completionHandler:(void(^)(int statusCode,JcqCreateTopicResponse* _Nullable createTopicResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqCreateTopicExecutor* excutor = [[JcqCreateTopicExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:createTopicRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqCreateTopicResponse* response = [[JcqCreateTopicResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
createSubscription sync request
@param createSubscriptionRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createSubscriptionResponse` the request response data model
*/
-(NSDictionary*) createSubscriptionSyncWithRequest:(JcqCreateSubscriptionRequest*) createSubscriptionRequest
{
JcqCreateSubscriptionExecutor* excutor = [[JcqCreateSubscriptionExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:createSubscriptionRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqCreateSubscriptionResponse* response = [[JcqCreateSubscriptionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"createSubscriptionResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)createSubscriptionAsyncWithRequest:(JcqCreateSubscriptionRequest*) createSubscriptionRequest
                       completionHandler:(void(^)(int statusCode,JcqCreateSubscriptionResponse* _Nullable createSubscriptionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqCreateSubscriptionExecutor* excutor = [[JcqCreateSubscriptionExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:createSubscriptionRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqCreateSubscriptionResponse* response = [[JcqCreateSubscriptionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeMessageTrace sync request
@param describeMessageTraceRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeMessageTraceResponse` the request response data model
*/
-(NSDictionary*) describeMessageTraceSyncWithRequest:(JcqDescribeMessageTraceRequest*) describeMessageTraceRequest
{
JcqDescribeMessageTraceExecutor* excutor = [[JcqDescribeMessageTraceExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeMessageTraceRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeMessageTraceResponse* response = [[JcqDescribeMessageTraceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeMessageTraceResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeMessageTraceAsyncWithRequest:(JcqDescribeMessageTraceRequest*) describeMessageTraceRequest
                       completionHandler:(void(^)(int statusCode,JcqDescribeMessageTraceResponse* _Nullable describeMessageTraceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqDescribeMessageTraceExecutor* excutor = [[JcqDescribeMessageTraceExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeMessageTraceRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeMessageTraceResponse* response = [[JcqDescribeMessageTraceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeConsumerGroupIds sync request
@param describeConsumerGroupIdsRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeConsumerGroupIdsResponse` the request response data model
*/
-(NSDictionary*) describeConsumerGroupIdsSyncWithRequest:(JcqDescribeConsumerGroupIdsRequest*) describeConsumerGroupIdsRequest
{
JcqDescribeConsumerGroupIdsExecutor* excutor = [[JcqDescribeConsumerGroupIdsExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeConsumerGroupIdsRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeConsumerGroupIdsResponse* response = [[JcqDescribeConsumerGroupIdsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeConsumerGroupIdsResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeConsumerGroupIdsAsyncWithRequest:(JcqDescribeConsumerGroupIdsRequest*) describeConsumerGroupIdsRequest
                       completionHandler:(void(^)(int statusCode,JcqDescribeConsumerGroupIdsResponse* _Nullable describeConsumerGroupIdsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqDescribeConsumerGroupIdsExecutor* excutor = [[JcqDescribeConsumerGroupIdsExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeConsumerGroupIdsRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeConsumerGroupIdsResponse* response = [[JcqDescribeConsumerGroupIdsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
modifySubscriptionAttribute sync request
@param modifySubscriptionAttributeRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifySubscriptionAttributeResponse` the request response data model
*/
-(NSDictionary*) modifySubscriptionAttributeSyncWithRequest:(JcqModifySubscriptionAttributeRequest*) modifySubscriptionAttributeRequest
{
JcqModifySubscriptionAttributeExecutor* excutor = [[JcqModifySubscriptionAttributeExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:modifySubscriptionAttributeRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqModifySubscriptionAttributeResponse* response = [[JcqModifySubscriptionAttributeResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"modifySubscriptionAttributeResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)modifySubscriptionAttributeAsyncWithRequest:(JcqModifySubscriptionAttributeRequest*) modifySubscriptionAttributeRequest
                       completionHandler:(void(^)(int statusCode,JcqModifySubscriptionAttributeResponse* _Nullable modifySubscriptionAttributeResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqModifySubscriptionAttributeExecutor* excutor = [[JcqModifySubscriptionAttributeExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:modifySubscriptionAttributeRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqModifySubscriptionAttributeResponse* response = [[JcqModifySubscriptionAttributeResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeSubscription sync request
@param describeSubscriptionRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeSubscriptionResponse` the request response data model
*/
-(NSDictionary*) describeSubscriptionSyncWithRequest:(JcqDescribeSubscriptionRequest*) describeSubscriptionRequest
{
JcqDescribeSubscriptionExecutor* excutor = [[JcqDescribeSubscriptionExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeSubscriptionRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeSubscriptionResponse* response = [[JcqDescribeSubscriptionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeSubscriptionResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeSubscriptionAsyncWithRequest:(JcqDescribeSubscriptionRequest*) describeSubscriptionRequest
                       completionHandler:(void(^)(int statusCode,JcqDescribeSubscriptionResponse* _Nullable describeSubscriptionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqDescribeSubscriptionExecutor* excutor = [[JcqDescribeSubscriptionExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeSubscriptionRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeSubscriptionResponse* response = [[JcqDescribeSubscriptionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
addPermission sync request
@param addPermissionRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `addPermissionResponse` the request response data model
*/
-(NSDictionary*) addPermissionSyncWithRequest:(JcqAddPermissionRequest*) addPermissionRequest
{
JcqAddPermissionExecutor* excutor = [[JcqAddPermissionExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:addPermissionRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqAddPermissionResponse* response = [[JcqAddPermissionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"addPermissionResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)addPermissionAsyncWithRequest:(JcqAddPermissionRequest*) addPermissionRequest
                       completionHandler:(void(^)(int statusCode,JcqAddPermissionResponse* _Nullable addPermissionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqAddPermissionExecutor* excutor = [[JcqAddPermissionExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:addPermissionRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqAddPermissionResponse* response = [[JcqAddPermissionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeTopic sync request
@param describeTopicRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeTopicResponse` the request response data model
*/
-(NSDictionary*) describeTopicSyncWithRequest:(JcqDescribeTopicRequest*) describeTopicRequest
{
JcqDescribeTopicExecutor* excutor = [[JcqDescribeTopicExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeTopicRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeTopicResponse* response = [[JcqDescribeTopicResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeTopicResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeTopicAsyncWithRequest:(JcqDescribeTopicRequest*) describeTopicRequest
                       completionHandler:(void(^)(int statusCode,JcqDescribeTopicResponse* _Nullable describeTopicResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqDescribeTopicExecutor* excutor = [[JcqDescribeTopicExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeTopicRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeTopicResponse* response = [[JcqDescribeTopicResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeMessages sync request
@param describeMessagesRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeMessagesResponse` the request response data model
*/
-(NSDictionary*) describeMessagesSyncWithRequest:(JcqDescribeMessagesRequest*) describeMessagesRequest
{
JcqDescribeMessagesExecutor* excutor = [[JcqDescribeMessagesExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeMessagesRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeMessagesResponse* response = [[JcqDescribeMessagesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeMessagesResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeMessagesAsyncWithRequest:(JcqDescribeMessagesRequest*) describeMessagesRequest
                       completionHandler:(void(^)(int statusCode,JcqDescribeMessagesResponse* _Nullable describeMessagesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqDescribeMessagesExecutor* excutor = [[JcqDescribeMessagesExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeMessagesRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeMessagesResponse* response = [[JcqDescribeMessagesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeSubscriptions sync request
@param describeSubscriptionsRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeSubscriptionsResponse` the request response data model
*/
-(NSDictionary*) describeSubscriptionsSyncWithRequest:(JcqDescribeSubscriptionsRequest*) describeSubscriptionsRequest
{
JcqDescribeSubscriptionsExecutor* excutor = [[JcqDescribeSubscriptionsExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeSubscriptionsRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeSubscriptionsResponse* response = [[JcqDescribeSubscriptionsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeSubscriptionsResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeSubscriptionsAsyncWithRequest:(JcqDescribeSubscriptionsRequest*) describeSubscriptionsRequest
                       completionHandler:(void(^)(int statusCode,JcqDescribeSubscriptionsResponse* _Nullable describeSubscriptionsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqDescribeSubscriptionsExecutor* excutor = [[JcqDescribeSubscriptionsExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeSubscriptionsRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeSubscriptionsResponse* response = [[JcqDescribeSubscriptionsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeMessage sync request
@param describeMessageRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeMessageResponse` the request response data model
*/
-(NSDictionary*) describeMessageSyncWithRequest:(JcqDescribeMessageRequest*) describeMessageRequest
{
JcqDescribeMessageExecutor* excutor = [[JcqDescribeMessageExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeMessageRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeMessageResponse* response = [[JcqDescribeMessageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeMessageResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeMessageAsyncWithRequest:(JcqDescribeMessageRequest*) describeMessageRequest
                       completionHandler:(void(^)(int statusCode,JcqDescribeMessageResponse* _Nullable describeMessageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqDescribeMessageExecutor* excutor = [[JcqDescribeMessageExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeMessageRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeMessageResponse* response = [[JcqDescribeMessageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeMessagesByBusinessId sync request
@param describeMessagesByBusinessIdRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeMessagesByBusinessIdResponse` the request response data model
*/
-(NSDictionary*) describeMessagesByBusinessIdSyncWithRequest:(JcqDescribeMessagesByBusinessIdRequest*) describeMessagesByBusinessIdRequest
{
JcqDescribeMessagesByBusinessIdExecutor* excutor = [[JcqDescribeMessagesByBusinessIdExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeMessagesByBusinessIdRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeMessagesByBusinessIdResponse* response = [[JcqDescribeMessagesByBusinessIdResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeMessagesByBusinessIdResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeMessagesByBusinessIdAsyncWithRequest:(JcqDescribeMessagesByBusinessIdRequest*) describeMessagesByBusinessIdRequest
                       completionHandler:(void(^)(int statusCode,JcqDescribeMessagesByBusinessIdResponse* _Nullable describeMessagesByBusinessIdResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqDescribeMessagesByBusinessIdExecutor* excutor = [[JcqDescribeMessagesByBusinessIdExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeMessagesByBusinessIdRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeMessagesByBusinessIdResponse* response = [[JcqDescribeMessagesByBusinessIdResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describePermission sync request
@param describePermissionRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describePermissionResponse` the request response data model
*/
-(NSDictionary*) describePermissionSyncWithRequest:(JcqDescribePermissionRequest*) describePermissionRequest
{
JcqDescribePermissionExecutor* excutor = [[JcqDescribePermissionExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describePermissionRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribePermissionResponse* response = [[JcqDescribePermissionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describePermissionResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describePermissionAsyncWithRequest:(JcqDescribePermissionRequest*) describePermissionRequest
                       completionHandler:(void(^)(int statusCode,JcqDescribePermissionResponse* _Nullable describePermissionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqDescribePermissionExecutor* excutor = [[JcqDescribePermissionExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describePermissionRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribePermissionResponse* response = [[JcqDescribePermissionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeDeadLetterNumbersWithTopic sync request
@param describeDeadLetterNumbersWithTopicRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeDeadLetterNumbersWithTopicResponse` the request response data model
*/
-(NSDictionary*) describeDeadLetterNumbersWithTopicSyncWithRequest:(JcqDescribeDeadLetterNumbersWithTopicRequest*) describeDeadLetterNumbersWithTopicRequest
{
JcqDescribeDeadLetterNumbersWithTopicExecutor* excutor = [[JcqDescribeDeadLetterNumbersWithTopicExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeDeadLetterNumbersWithTopicRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeDeadLetterNumbersWithTopicResponse* response = [[JcqDescribeDeadLetterNumbersWithTopicResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeDeadLetterNumbersWithTopicResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeDeadLetterNumbersWithTopicAsyncWithRequest:(JcqDescribeDeadLetterNumbersWithTopicRequest*) describeDeadLetterNumbersWithTopicRequest
                       completionHandler:(void(^)(int statusCode,JcqDescribeDeadLetterNumbersWithTopicResponse* _Nullable describeDeadLetterNumbersWithTopicResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqDescribeDeadLetterNumbersWithTopicExecutor* excutor = [[JcqDescribeDeadLetterNumbersWithTopicExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeDeadLetterNumbersWithTopicRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDescribeDeadLetterNumbersWithTopicResponse* response = [[JcqDescribeDeadLetterNumbersWithTopicResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
deleteSubscription sync request
@param deleteSubscriptionRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteSubscriptionResponse` the request response data model
*/
-(NSDictionary*) deleteSubscriptionSyncWithRequest:(JcqDeleteSubscriptionRequest*) deleteSubscriptionRequest
{
JcqDeleteSubscriptionExecutor* excutor = [[JcqDeleteSubscriptionExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:deleteSubscriptionRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDeleteSubscriptionResponse* response = [[JcqDeleteSubscriptionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"deleteSubscriptionResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)deleteSubscriptionAsyncWithRequest:(JcqDeleteSubscriptionRequest*) deleteSubscriptionRequest
                       completionHandler:(void(^)(int statusCode,JcqDeleteSubscriptionResponse* _Nullable deleteSubscriptionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
JcqDeleteSubscriptionExecutor* excutor = [[JcqDeleteSubscriptionExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:deleteSubscriptionRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    JcqDeleteSubscriptionResponse* response = [[JcqDeleteSubscriptionResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}


 /**
 jcq common sync request
 @param  jdcloudDataRequest request param
 @return key `statusCode` http request status code type is int
             `dataResult` the http request response data  type is NSData
             `requestError` the request error type is NSError
 */
 -(NSDictionary*) jcqCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                                   url:(NSString*) url
                                                method:(NSString*) method{
    CommonExecutor* excutor = [[CommonExecutor alloc] initWithJDCloudClient:self url:url method:method];
    NSDictionary* responseResult = [excutor executeDataSync:jdcloudDataRequest];
    return responseResult;
}

-(void)jcqCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                         url:(NSString*) url
                                      method:(NSString*) method
                           completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
     CommonExecutor* excutor = [[CommonExecutor alloc] initWithJDCloudClient:self url:url method:method];
    
    [excutor executeDataAsync:jdcloudDataRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        completionHandler(statusCode,responseData,error);
    }];
} 

@end
